// 1.引入express模块
const express = require('express');
const { send } = require('process');

// 2.引入连接池模块
const pool = require('../pool.js')

// 3.因为要打包暴露出去,所以要创建一个路由对象
const router = express.Router();

/*******************接口逻辑******************/
//接口1:获取所有商品的种类
//请求方法:get
//后台请求地址:/all_type
//前台访问地址:/product/all_type
//需要获取请求:req.query
//需要对数据库进行“插入”
//sql:`select * from product_type;`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.get('/all_type', (req, res, next) => {
    pool.query('select * from product_type;', (err, data) => {
        if (err) { next(err); return; }
        if (data.length) {
            res.send({
                code: 200,
                msg: '成功获取所有商品种类',
                result: data
            })
        } else {
            res.send({
                code: 400,
                msg: '为能获取到商品种类'
            })
        }
    })
})


/*******************接口逻辑******************/
//接口2:通过商品种类获取商品信息
//请求方法:get
//后台请求地址:/type/pro_inform
//前台访问地址:/product/type/pro_inform
//需要获取请求:req.query
//需要对数据库进行“插入”
//sql:`select * from product where type_id = ?;`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.get('/type/pro_inform', (req, res, next) => {
    var obj = req.query
    pool.query('select * from product where type_id = ?;', [obj.pid], (err, data) => {
        if (err) { next(err); return; }
        if (data.length) {
            res.send({
                code: 201,
                msg: '成功获取到该类别下的商品数据',
                result: data
            })
        } else {
            res.send({
                code: 401,
                msg: '未能获取到相应类别的商品'
            })
        }
    })
})


/*******************接口逻辑******************/
//接口3:获取对应用户的购物车内的商品信息
//请求方法:post
//后台请求地址:/cart_product
//前台访问地址:/product/cart_product
//需要获取请求:req.body
//需要对数据库进行“插入”
//sql:`select * from product where pid in (select proid from cart_details where cid = (select cid from shopping_cart where user_id = ?));`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.post('/cart_product', (req, res, next) => {
    var obj = req.body
    pool.query('select * from product where pid in (select proid from cart_details where cid = (select cid from shopping_cart where user_id = ?));', [obj.uid], (err, data) => {
        if (err) { next(err); return; }
        if (data.length) {
            res.send({
                code: 202,
                msg: '成功获取到该用户购物车中的数据',
                result: data
            })
        } else {
            res.send({
                code: 402,
                msg: '未能获取到该用户购物车的数据'
            })
        }
    })
})


/*******************接口逻辑******************/
//接口4:获取商品信息
//请求方法:get
//后台请求地址:/pro_details
//前台访问地址:/product/pro_details
//需要获取请求:req.query
//需要对数据库进行“插入”
//sql:`select * from product where pid = ?;`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.get('/pro_details', (req, res, next) => {
    var obj = req.query
    pool.query('select * from product where pid = ?;', [obj.pid], (err, data) => {
        if (err) { next(err); return; }
        if (data.length) {
            res.send({
                code: 203,
                msg: '成功获取商品详情',
                result: data
            })
        } else {
            res.send({
                code: 403,
                msg: '未能获取到商品详情'
            })
        }
    })
})


// 4.暴露路由(user)对象
module.exports = router;